<template>
    <div>
        <!-- 面包屑导航区 -->
        <el-breadcrumb separator-class="el-icon-arrow-right">
            <el-breadcrumb-item :to="{ path: '/home' }">首页</el-breadcrumb-item>
            <el-breadcrumb-item>用户管理</el-breadcrumb-item>
            <el-breadcrumb-item>用户列表</el-breadcrumb-item>
        </el-breadcrumb>

        <!-- 卡片视图区域 -->
        <el-card>
            <!-- 搜索与添加区域 -->
            <el-row :gutter="20">
                <el-col :span="7">
                    <el-input placeholder="请输入内容" v-model="queryInfo.query" clearable @clear="getUserList">
                        <el-button slot="append" icon="el-icon-search"
                        @click="getUserList"></el-button>
                    </el-input>
                </el-col>
                <el-col :span="4">
                    <el-button type="primary" @click="addDialogVisible = true">添加用户</el-button>
                </el-col>
            </el-row>

            <!-- 用户列表区域 -->
            <el-table :data="userlist" border stripe>
                <el-table-column type="index"></el-table-column>
                <el-table-column label="工号" prop="userId"></el-table-column>
                <el-table-column label="姓名" prop="realName"></el-table-column>
                <el-table-column label="身份证号" prop="pid"></el-table-column>
                <el-table-column label="电话" prop="phone"></el-table-column>
                <el-table-column label="性别" prop="sex"></el-table-column>
                <el-table-column label="出生日期" prop="birthday"></el-table-column>
                <el-table-column label="住址" prop="address"></el-table-column>
                <el-table-column label="最后登录时间" prop="lastLoginDate"></el-table-column>
                <el-table-column label="登录状态" prop="loginStatus"></el-table-column>
                <el-table-column label="状态">
                    <template slot-scope="scope">
                        <el-switch v-model="scope.row.status"></el-switch>
                    </template>
                </el-table-column>
                <el-table-column label="操作" width="180px">
                    <template slot-scope="scope">
                        <!-- 修改按钮 -->
                        <el-button type="primary" icon="el-icon-edit" size="mini" @click.native="showEdit()"></el-button>
                        <!-- 删除按钮 -->
                        <el-button type="danger" icon="el-icon-delete" size="mini"  @click.native="removeUserById(scope.row.userId)"></el-button>
                        <!-- 分配角色按钮 -->
                         <el-tooltip effect="dark" content="分配角色" placement="top" :enterable="false">
                            <el-button type="warning" icon="el-icon-setting" size="mini"></el-button>
                        </el-tooltip> 
                    </template>
                </el-table-column>
            </el-table>

            <!-- 分页区域 -->
             <el-pagination
            @size-change="handleSizeChange"
            @current-change="handleCurrentChange"
            :current-page="queryInfo.page"
            :page-sizes="[10, 20, 30, 40]"
            :page-size="queryInfo.limit"
            layout="total, sizes, prev, pager, next, jumper"
            :total="totle">
            </el-pagination>
        </el-card>

        <!-- 添加用户的对话框 -->
        <el-dialog
        title="添加用户"
        :visible.sync="addDialogVisible"
        width="50%"
        @close="addDialogClosed">
        <!-- 内容主题区域 -->
        <el-form :model="addForm" :rules="addFormRules" ref="ruleFormRef" label-width="70px">
            <el-form-item label="工号" prop="userId">
                <el-input v-model="addForm.userId"></el-input>
            </el-form-item>
            <el-form-item label="姓名" prop="realName">
                <el-input v-model="addForm.userId"></el-input>
            </el-form-item>
            <el-form-item label="密码" prop="pwd">
                <el-input v-model="addForm.userId"></el-input>
            </el-form-item>
            <el-form-item label="身份证" prop="userId">
                <el-input v-model="addForm.userId"></el-input>
            </el-form-item>
            <el-form-item label="电话" prop="userId">
                <el-input v-model="addForm.userId"></el-input>
            </el-form-item>
            <el-form-item label="出生日期" prop="userId">
                <el-input v-model="addForm.userId"></el-input>
            </el-form-item>
            <el-form-item label="地址" prop="userId">
                <el-input v-model="addForm.userId"></el-input>
            </el-form-item>
        </el-form>
        <!-- 底部区域 -->
        <span slot="footer" class="dialog-footer">
            <el-button @click.native="addDialogVisible = false">取 消</el-button>
            <el-button type="primary" @click="addDialogVisible = false">确 定</el-button>
        </span>
        </el-dialog>

        <!-- 修改用户的对话框 -->
        <el-dialog
        title="修改用户"
        :visible.sync="editDialogVisible"
        width="50%"
        @close="editDialogVisible">
        <!-- 内容主题区域 -->
        <el-form :model="addForm" :rules="addFormRules" ref="ruleFormRef" label-width="70px">
            <el-form-item label="工号" prop="userId">
                <el-input v-model="addForm.userId"></el-input>
            </el-form-item>
            <el-form-item label="姓名" prop="realName">
                <el-input v-model="addForm.userId"></el-input>
            </el-form-item>
            <el-form-item label="密码" prop="pwd">
                <el-input v-model="addForm.userId"></el-input>
            </el-form-item>
            <el-form-item label="身份证" prop="userId">
                <el-input v-model="addForm.userId"></el-input>
            </el-form-item>
            <el-form-item label="电话" prop="userId">
                <el-input v-model="addForm.userId"></el-input>
            </el-form-item>
            <el-form-item label="出生日期" prop="userId">
                <el-input v-model="addForm.userId"></el-input>
            </el-form-item>
            <el-form-item label="地址" prop="userId">
                <el-input v-model="addForm.userId"></el-input>
            </el-form-item>
        </el-form>
        <!-- 底部区域 -->
        <span slot="footer" class="dialog-footer">
            <el-button @click.native="editDialogVisible = false">取 消</el-button>
            <el-button type="primary" @click="editDialogVisible = false">确 定</el-button>
        </span>
        </el-dialog>
    </div>
</template>

<script>
export default {
    data() {
        return {
            //获取用户列表的参数对象
            queryInfo: {
                query: '',
                page: '1',
                limit: '10',
            },
            userlist: [],
            totle: 0,

            //控制添加对话框的显示与隐藏
            addDialogVisible: false,

            //添加用户的表单数据
            addForm: {
                userId: ''
            },

            //添加表单的验证规则对象
            addFormRules: {
                userId: [
                    { required: true, message: '请输入工号', trigger: 'blur' },
                    { min: 3, max: 10, message: '用户工号的长度在5-10个字符之间', trigger: blur }
                ]
            },

            //控制修改对话框的显示与隐藏
            editDialogVisible: false
        }
    },
    created() {
        this.getUserList()
    },
    methods: {
        async getUserList() {
           const {data: res} = await this.$http.get('user/getuserlistByPage?limit=10&page=1', {parmams: this.queryInfo })
           if(res.code !== 0) {
               return this.$message.error('获取用户失败')
           }
           this.userlist = res.data
           this.totle = res.count
        },

        //监听pagesize改变事件
        handleSizeChange(newSize) {
            this.queryInfo.limit = newSize
            this.getUserList()
        },

        //监听页码值改变的事件
        handleCurrentChange(newPage) {
            this.queryInfo.page = newPage
            this.getUserList()
        },

        //监听用户对话框的关闭事件
        addDialogClosed() {
            this.$refs.addFormRules.resetFields()
        },

        //展示编辑的对话框
        showEdit() {
            this.editDialogVisible = true
        },

        //根据Id删除对应的用户
        removeUserById(userId) {
            //弹框询问是否删除
            this.$confirm('永久删除信息, 是否继续?', '提示', {
            confirmButtonText: '确定',
            cancelButtonText: '取消',
            type: 'warning'
            })
        }
    }
}
</script>

<style lang="less" scoped>

</style>